1
Các trừu tượng hiện đại: Sức mạnh của Rust chức năng
AI034Lesson 13
00:00

Rust hiện đại tận dụng lập trình hàm các nguyên tắc để cung cấp các trừu tượng không tốn kém. Bằng cách xem các hàm như giá trị và dữ liệu như luồng bất biến, Rust cho phép thực hiện các thao tác I/O mang tính biểu đạt thao tác nhập/xuất mà không đánh đổi hiệu suất.

1. Môi trường và các hàm đóng gói (Closures)

Khác với các hàm tiêu chuẩn, các hàm đóng gói có thể Thu thập môi trường của chúng. Chúng sử dụng các Fn, FnMut, hoặc FnOnce đặc điểm để quản lý chuyển giao quyền sở hữu trong các hàm đóng gói, đảm bảo an toàn bộ nhớ được duy trì ngay cả khi các hàm mang theo trạng thái.

let v1 = vec![1, 2, 3];
let v1_iter = v1.iter().map(|x| x + 1);
// v1_iter là tham chiếu trễ và chưa thực thi!

2. Các luồng khai báo

Bằng cách sử dụng các bộ thích nghi vòng lặp (Iterator Adaptors), các nhà phát triển thay thế các vòng lặp lồng nhau dài dòng bằng logic ngắn gọn. Phương thức iter_mut cho phép thực hiện các biến đổi chức năng an toàn tại chỗ, trong khi trình biên dịch tối ưu các lời gọi cấp cao này thành mã máy tương đương với các vòng lặp viết tay.

Luồng chức năngcontents.lines().filter(|l| l.contains(q)).collect()Lưới an toànlỗi[E0502]: không thể mượn`list` dưới dạng bất biến vì...🦀?

3. Các bài kiểm tra hiệu suất

Khi được biên dịch ở chế độ phát triển (dev profile) hoặc phát hành, hàm search chứng minh hiệu quả của nó. Các bài kiểm tra thống kê cho thấy: test bench_search_iter ... bench: 19.234.900 ns/iter. Điều này xác nhận rằng các trừu tượng này thực sự là không tốn kém.

⚠️ Cảnh báo trình biên dịch
cảnh báo: `Map` không được dùng nhưng phải được sử dụng. Các vòng lặp là kiểu trễ; chúng không làm gì nếu không bị một phương thức như collect() hoặc sum().
main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>